<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>

// await是等待的意思，等待后面表达式的结果
// 通常await后面是Promise对象，它会等待后面Promise对象成功状态的结果（等待不到失败的结果）

// 注意：await命令必须在async函数内部使用！
// let res1 = await 1+2;// 报错
// console.log( res1 );

/* console.log( 1 );
(async function (){
    console.log( 2 );
    let res1 = await 3;
    // 等待（执行到await时会暂停执行，跳出当前函数执行流，先执行完函数外部的同步程序，然后再回到函数内部继续往下执行）
    console.log( res1 );// 3
})();
console.log( 4 );
// 1 2 4 3  */


(async function (){
    console.log( 1 );

    let res1 = await new Promise((resolve,reject)=>{// 同步执行
        console.log( 2 );

        setTimeout(() => {// 异步执行
            console.log( 3 );
            resolve(4);
        }, 800);
    });
    // 等待（执行到await时会暂停执行，跳出当前函数执行流，先执行完函数外部的同步程序，然后再回到函数内部继续往下执行）

    console.log( res1 );
})();
console.log( 5 );
// 1 2 5 3 4  


</script>
</body>
</html>